home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / term / extras / source / term-source.lha / LibPanel.c < prev    next >
C/C++ Source or Header  |  1995-06-17  |  29KB  |  1,158 lines

  1. /*
  2. **    LibPanel.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_DEFAULT_TYPE=1000,
  13.         GAD_DEFAULT_NAME,
  14.         GAD_DEFAULT_SENDSIGNATURE,
  15.         GAD_DEFAULT_PREFS,
  16.  
  17.         GAD_ASCII_UPLOAD_TYPE,
  18.         GAD_ASCII_UPLOAD_NAME,
  19.         GAD_ASCII_UPLOAD_SIGNATURE,
  20.         GAD_ASCII_UPLOAD_PREFS,
  21.         GAD_ASCII_DOWNLOAD_TYPE,
  22.         GAD_ASCII_DOWNLOAD_NAME,
  23.         GAD_ASCII_DOWNLOAD_SIGNATURE,
  24.         GAD_ASCII_DOWNLOAD_PREFS,
  25.  
  26.         GAD_TEXT_UPLOAD_TYPE,
  27.         GAD_TEXT_UPLOAD_NAME,
  28.         GAD_TEXT_UPLOAD_SIGNATURE,
  29.         GAD_TEXT_UPLOAD_PREFS,
  30.         GAD_TEXT_DOWNLOAD_TYPE,
  31.         GAD_TEXT_DOWNLOAD_NAME,
  32.         GAD_TEXT_DOWNLOAD_SIGNATURE,
  33.         GAD_TEXT_DOWNLOAD_PREFS,
  34.  
  35.         GAD_BINARY_UPLOAD_TYPE,
  36.         GAD_BINARY_UPLOAD_NAME,
  37.         GAD_BINARY_UPLOAD_SIGNATURE,
  38.         GAD_BINARY_UPLOAD_PREFS,
  39.         GAD_BINARY_DOWNLOAD_TYPE,
  40.         GAD_BINARY_DOWNLOAD_NAME,
  41.         GAD_BINARY_DOWNLOAD_SIGNATURE,
  42.         GAD_BINARY_DOWNLOAD_PREFS,
  43.  
  44.         GAD_DEFAULT_RECEIVESIGNATURE,
  45.  
  46.         GAD_MANGLE,GAD_PAGE,GAD_PAGEGROUP,
  47.         GAD_NOTIFY_AFTER_N_ERRORS,GAD_NOTIFY_WHEN,
  48.         GAD_USE,GAD_CANCEL,GAD_DEFAULT,
  49.  
  50.         GAD_PROTOCOLTYPE
  51.     };
  52.  
  53. BOOLEAN __regargs
  54. SignaturePanel(struct Window *Parent,STRPTR String,BOOLEAN ReceiveMode)
  55. {
  56.     STATIC STRPTR SendProtocols[] =
  57.     {
  58.         "Z-Modem",
  59.         NULL
  60.     };
  61.  
  62.     STATIC STRPTR SendSignatureTypes[] =
  63.     {
  64.         "*^XB01",
  65.         NULL
  66.     };
  67.  
  68.     STATIC STRPTR ReceiveProtocols[] =
  69.     {
  70.         "Z-Modem",
  71.         "Hydra",
  72.         "QuickB",
  73.         NULL
  74.     };
  75.  
  76.     STATIC STRPTR ReceiveSignatureTypes[] =
  77.     {
  78.         "*^XB00",
  79.         "^XcA\\\\f5\\\\a3^Xa",
  80.         "\\*ENQ",
  81.         NULL
  82.     };
  83.  
  84.     struct LayoutHandle    *Handle;
  85.     BOOLEAN             Ok = FALSE;
  86.     STRPTR            *SignatureTypes,
  87.                 *Protocols;
  88.  
  89.     if(ReceiveMode)
  90.     {
  91.         SignatureTypes    = ReceiveSignatureTypes;
  92.         Protocols    = ReceiveProtocols;
  93.     }
  94.     else
  95.     {
  96.         SignatureTypes    = SendSignatureTypes;
  97.         Protocols    = SendProtocols;
  98.     }
  99.  
  100.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  101.         LH_LocaleHook,    &LocaleHook,
  102.     TAG_DONE))
  103.     {
  104.         struct Window    *PanelWindow;
  105.         BYTE         Index = 0;
  106.  
  107.         LT_New(Handle,
  108.             LA_Type,    VERTICAL_KIND,
  109.         TAG_DONE);
  110.         {
  111.             LT_New(Handle,
  112.                 LA_Type,    VERTICAL_KIND,
  113.             TAG_DONE);
  114.             {
  115.                 LT_New(Handle,
  116.                     LA_Type,    LISTVIEW_KIND,
  117.                     LA_LabelID,    MSG_XFER_SELECT_SIGNATURE_TXT,
  118.                     LALV_Labels,    Protocols,
  119.                     LALV_Link,    NIL_LINK,
  120.                     LALV_CursorKey,    TRUE,
  121.                     LALV_MaxGrowY,    5,
  122.                     LA_BYTE,    &Index,
  123.                     LA_ID,        GAD_PROTOCOLTYPE,
  124.                     LA_Chars,    30,
  125.                 TAG_DONE);
  126.  
  127.                 LT_EndGroup(Handle);
  128.             }
  129.  
  130.             LT_New(Handle,
  131.                 LA_Type,VERTICAL_KIND,
  132.             TAG_DONE);
  133.             {
  134.                 LT_New(Handle,
  135.                     LA_Type,    XBAR_KIND,
  136.                     LAXB_FullSize,    TRUE,
  137.                 TAG_DONE);
  138.  
  139.                 LT_EndGroup(Handle);
  140.             }
  141.  
  142.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  143.                 LAGR_SameSize,    TRUE,
  144.                 LAGR_Spread,    TRUE,
  145.             TAG_DONE);
  146.             {
  147.                 LT_New(Handle,
  148.                     LA_Type,    BUTTON_KIND,
  149.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  150.                     LA_ID,        GAD_USE,
  151.                     LABT_ReturnKey,    TRUE,
  152.                     LABT_ExtraFat,    TRUE,
  153.                 TAG_DONE);
  154.  
  155.                 LT_New(Handle,
  156.                     LA_Type,    BUTTON_KIND,
  157.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  158.                     LA_ID,        GAD_CANCEL,
  159.                     LABT_EscKey,    TRUE,
  160.                     LABT_ExtraFat,    TRUE,
  161.                 TAG_DONE);
  162.  
  163.                 LT_EndGroup(Handle);
  164.             }
  165.  
  166.             LT_EndGroup(Handle);
  167.         }
  168.  
  169.         if(PanelWindow = LT_Build(Handle,
  170.             LAWN_TitleID,        MSG_XFER_SIGNATURE_TXT,
  171.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  172.             LAWN_HelpHook,        &GuideHook,
  173.             LAWN_Parent,        Window,
  174.             WA_DepthGadget,        TRUE,
  175.             WA_CloseGadget,        TRUE,
  176.             WA_DragBar,        TRUE,
  177.             WA_RMBTrap,        TRUE,
  178.             WA_Activate,        TRUE,
  179.         TAG_DONE))
  180.         {
  181.             struct IntuiMessage    *Message;
  182.             BOOLEAN             Done = FALSE;
  183.             ULONG             MsgClass,
  184.                          MsgQualifier;
  185.             UWORD             MsgCode;
  186.             struct Gadget        *MsgGadget;
  187.  
  188.             GuideContext(CONTEXT_SIGNATURE);
  189.  
  190.             PushWindow(PanelWindow);
  191.  
  192.             LT_ShowWindow(Handle,TRUE);
  193.  
  194.             do
  195.             {
  196.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  197.                     break;
  198.  
  199.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  200.                 {
  201.                     MsgClass    = Message -> Class;
  202.                     MsgQualifier    = Message -> Qualifier;
  203.                     MsgCode        = Message -> Code;
  204.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  205.  
  206.                     GT_ReplyIMsg(Message);
  207.  
  208.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  209.  
  210.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  211.                         Done = TRUE;
  212.  
  213.                     if(MsgClass == IDCMP_GADGETUP)
  214.                     {
  215.                         switch(MsgGadget -> GadgetID)
  216.                         {
  217.                             case GAD_USE:
  218.  
  219.                                 strcpy(String,SignatureTypes[Index]);
  220.  
  221.                                 Ok = Done = TRUE;
  222.                                 break;
  223.  
  224.                             case GAD_CANCEL:
  225.  
  226.                                 Done = TRUE;
  227.                                 break;
  228.                         }
  229.                     }
  230.  
  231.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  232.                     {
  233.                         strcpy(String,SignatureTypes[Index]);
  234.  
  235.                         Ok = Done = TRUE;
  236.  
  237.                         LT_PressButton(Handle,GAD_USE);
  238.                     }
  239.                 }
  240.             }
  241.             while(!Done);
  242.  
  243.             PopWindow();
  244.         }
  245.  
  246.         LT_DeleteHandle(Handle);
  247.     }
  248.  
  249.     return(Ok);
  250. }
  251.  
  252. BYTE __regargs
  253. LibPanel(struct Configuration *Config,BYTE *Default)
  254. {
  255.     STATIC LONG PageTitleID[6] =
  256.     {
  257.         MSG_XFER_GENERAL_OPTIONS_TXT,
  258.         MSG_XFER_PAGE1_TXT,
  259.         MSG_XFER_PAGE2_TXT,
  260.         MSG_XFER_PAGE3_TXT,
  261.         MSG_XFER_PAGE4_TXT,
  262.         -1
  263.     };
  264.  
  265.     STATIC BYTE         InitialPage = 0;
  266.  
  267.     struct LayoutHandle    *Handle;
  268.     BYTE             OpenIt = TRUE,
  269.                  Cancel = FALSE;
  270.     STRPTR             Signatures[TRANSFERSIG_BINARYDOWNLOAD + 1];
  271.     WORD             i;
  272.     STRPTR             PageTitle[6];
  273.  
  274.     LocalizeStringTable(PageTitle,PageTitleID);
  275.  
  276.     if(!(Signatures[0] = AllocVecPooled(40 * (TRANSFERSIG_BINARYDOWNLOAD + 1),MEMF_ANY)))
  277.         return(FALSE);
  278.  
  279.     SaveConfig(Config,PrivateConfig);
  280.  
  281.     for(i = 1 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  282.         Signatures[i] = Signatures[i - 1] + 40;
  283.  
  284.     for(i = 0 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  285.     {
  286.         if(Config -> TransferConfig -> Signatures[i] . Length)
  287.             TranslateBack(Config -> TransferConfig -> Signatures[i] . Signature,Config -> TransferConfig -> Signatures[i] . Length,Signatures[i]);
  288.         else
  289.             Signatures[i][0] = 0;
  290.     }
  291.  
  292.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  293.         LH_LocaleHook,    &LocaleHook,
  294.         LH_ExitFlush,    FALSE,
  295.     TAG_DONE))
  296.     {
  297.         struct Window *PanelWindow;
  298.  
  299.         LT_New(Handle,
  300.             LA_Type,    VERTICAL_KIND,
  301.         TAG_DONE);
  302.         {
  303.             LT_New(Handle,
  304.                 LA_Type,    VERTICAL_KIND,
  305.             TAG_DONE);
  306.             {
  307.                 LT_New(Handle,
  308.                     LA_Type,        CYCLE_KIND,
  309.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  310.                     GTCY_Labels,        PageTitle,
  311.                     LACY_AutoPageID,    GAD_PAGEGROUP,
  312.                     LACY_TabKey,        TRUE,
  313.                     LA_BYTE,        &InitialPage,
  314.                 TAG_DONE);
  315.  
  316.                 LT_EndGroup(Handle);
  317.             }
  318.  
  319.             LT_New(Handle,
  320.                 LA_Type,    VERTICAL_KIND,
  321.                 LA_ID,        GAD_PAGEGROUP,
  322.                 LAGR_Frame,    TRUE,
  323.                 LAGR_ActivePage,InitialPage,
  324.             TAG_DONE);
  325.             {
  326.  
  327.                 LT_New(Handle,
  328.                     LA_Type,    VERTICAL_KIND,
  329.                 TAG_DONE);
  330.                 {
  331.                     LT_New(Handle,
  332.                         LA_Type,    HORIZONTAL_KIND,
  333.                     TAG_DONE);
  334.                     {
  335.                         LT_New(Handle,
  336.                             LA_Type,    VERTICAL_KIND,
  337.                         TAG_DONE);
  338.                         {
  339.                             LT_New(Handle,
  340.                                 LA_Type,    CHECKBOX_KIND,
  341.                                 LA_LabelID,    MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD,
  342.                                 LA_BYTE,    &Config -> TransferConfig -> OverridePath,
  343.                             TAG_DONE);
  344.  
  345.                             LT_New(Handle,
  346.                                 LA_Type,    CHECKBOX_KIND,
  347.                                 LA_LabelID,    MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD,
  348.                                 LA_BYTE,    &Config -> TransferConfig -> SetArchivedBit,
  349.                             TAG_DONE);
  350.  
  351.                             LT_New(Handle,
  352.                                 LA_Type,    CHECKBOX_KIND,
  353.                                 LA_LabelID,    MSG_MISCPANEL_TRANSFER_ICONS_GAD,
  354.                                 LA_BYTE,    &Config -> TransferConfig -> TransferIcons,
  355.                             TAG_DONE);
  356.  
  357.                             LT_EndGroup(Handle);
  358.                         }
  359.  
  360.                         LT_New(Handle,
  361.                             LA_Type,    VERTICAL_KIND,
  362.                         TAG_DONE);
  363.                         {
  364.                             LT_New(Handle,
  365.                                 LA_Type,    CHECKBOX_KIND,
  366.                                 LA_LabelID,    MSG_MANGLE_UPLOAD_FILENAMES_TXT,
  367.                                 LA_BYTE,    &Config -> TransferConfig -> MangleFileNames,
  368.                                 LA_ID,        GAD_MANGLE,
  369.                             TAG_DONE);
  370.  
  371.                             LT_New(Handle,
  372.                                 LA_Type,    CHECKBOX_KIND,
  373.                                 LA_LabelID,    MSG_MISCPANEL_TRANSFER_METER_GAD,
  374.                                 LA_BYTE,    &Config -> TransferConfig -> PerfMeter,
  375.                             TAG_DONE);
  376.  
  377.                             LT_New(Handle,
  378.                                 LA_Type,    CHECKBOX_KIND,
  379.                                 LA_LabelID,    MSG_MISCPANEL_HIDE_UPLOAD_ICON_GAD,
  380.                                 LA_BYTE,    &Config -> TransferConfig -> HideUploadIcon,
  381.                             TAG_DONE);
  382.  
  383.                             LT_EndGroup(Handle);
  384.                         }
  385.  
  386.                         LT_EndGroup(Handle);
  387.                     }
  388.  
  389.                     LT_New(Handle,
  390.                         LA_Type,    VERTICAL_KIND,
  391.                     TAG_DONE);
  392.                     {
  393.                         LT_New(Handle,
  394.                             LA_Type,    XBAR_KIND,
  395.                         TAG_DONE);
  396.  
  397.                         LT_New(Handle,
  398.                             LA_Type,        INTEGER_KIND,
  399.                             LA_LabelID,        MSG_NOTIFY_USER_AFTER_N_ERRORS_HAVE_OCCURED_TXT,
  400.                             LA_UWORD,        &Config -> TransferConfig -> ErrorNotification,
  401.                             LA_ID,            GAD_NOTIFY_AFTER_N_ERRORS,
  402.                             LA_Chars,        8,
  403.                             LAIN_Min,        0,
  404.                             LAIN_Max,        65535,
  405.                             LAIN_UseIncrementers,    TRUE,
  406.                         TAG_DONE);
  407.  
  408.                         LT_EndGroup(Handle);
  409.                     }
  410.  
  411.                     LT_New(Handle,
  412.                         LA_Type,    VERTICAL_KIND,
  413.                     TAG_DONE);
  414.                     {
  415.                         LT_New(Handle,
  416.                             LA_Type,        CYCLE_KIND,
  417.                             LA_LabelID,        MSG_NOTIFY_USER_TXT,
  418.                             LA_BYTE,        &Config -> TransferConfig -> TransferNotification,
  419.                             LA_ID,            GAD_NOTIFY_WHEN,
  420.                             LACY_FirstLabel,    MSG_NOTIFY_USER_MODE1_TXT,
  421.                             LACY_LastLabel,        MSG_NOTIFY_USER_MODE4_TXT,
  422.                         TAG_DONE);
  423.  
  424.                         LT_New(Handle,
  425.                             LA_Type,        CYCLE_KIND,
  426.                             LA_LabelID,        MSG_MISCPANEL_IDENTIFY_FILES_GAD,
  427.                             LACY_FirstLabel,    MSG_MISCPANEL_IDENTIFY_IGNORE_TXT,
  428.                             LACY_LastLabel,        MSG_MISCPANEL_IDENTIFY_SOURCE_TXT,
  429.                             LA_BYTE,        &Config -> TransferConfig -> IdentifyFiles,
  430.                         TAG_DONE);
  431.  
  432.                         LT_EndGroup(Handle);
  433.                     }
  434.  
  435.                     LT_EndGroup(Handle);
  436.                 }
  437.  
  438.                 LT_New(Handle,
  439.                     LA_Type,    VERTICAL_KIND,
  440.                 TAG_DONE);
  441.                 {
  442.                     LT_New(Handle,
  443.                         LA_Type,    CYCLE_KIND,
  444.                         LA_ID,        GAD_DEFAULT_TYPE,
  445.                         LA_BYTE,    &Config -> TransferConfig -> DefaultType,
  446.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  447.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  448.                         LACY_LastLabel,    MSG_XFER_TYPE2_TXT,
  449.                         LA_Chars,    40,
  450.                     TAG_DONE);
  451.  
  452.                     LT_New(Handle,
  453.                         LA_Type,    STRING_KIND,
  454.                         LA_ID,        GAD_DEFAULT_NAME,
  455.                         LA_LabelID,    MSG_XFER_NAME_TXT,
  456.                         LA_STRPTR,    Config -> TransferConfig -> DefaultLibrary,
  457.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  458.                         LAST_Picker,    TRUE,
  459.                     TAG_DONE);
  460.  
  461.                     LT_New(Handle,
  462.                         LA_Type,    STRING_KIND,
  463.                         LA_ID,        GAD_DEFAULT_SENDSIGNATURE,
  464.                         LA_LabelID,    MSG_XFER_SEND_SIGNATURE_TXT,
  465.                         LA_STRPTR,    Signatures[TRANSFERSIG_DEFAULTUPLOAD],
  466.                         GTST_MaxChars,    40,
  467.                         LAST_Picker,    TRUE,
  468.                     TAG_DONE);
  469.  
  470.                     LT_New(Handle,
  471.                         LA_Type,    STRING_KIND,
  472.                         LA_ID,        GAD_DEFAULT_RECEIVESIGNATURE,
  473.                         LA_LabelID,    MSG_XFER_RECEIVE_SIGNATURE_TXT,
  474.                         LA_STRPTR,    Signatures[TRANSFERSIG_DEFAULTDOWNLOAD],
  475.                         GTST_MaxChars,    40,
  476.                         LAST_Picker,    TRUE,
  477.                     TAG_DONE);
  478.  
  479.                     LT_New(Handle,
  480.                         LA_Type,    BUTTON_KIND,
  481.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  482.                         LA_ID,        GAD_DEFAULT_PREFS,
  483.                     TAG_DONE);
  484.  
  485.                     LT_EndGroup(Handle);
  486.                 }
  487.  
  488.                 LT_New(Handle,
  489.                     LA_Type,    VERTICAL_KIND,
  490.                 TAG_DONE);
  491.                 {
  492.                     LT_New(Handle,
  493.                         LA_Type,    CYCLE_KIND,
  494.                         LA_ID,        GAD_ASCII_UPLOAD_TYPE,
  495.                         LA_BYTE,    &Config -> TransferConfig -> ASCIIUploadType,
  496.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  497.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  498.                         LACY_LastLabel,    MSG_XFER_TYPE4_TXT,
  499.                         LA_Chars,    40,
  500.                     TAG_DONE);
  501.  
  502.                     LT_New(Handle,
  503.                         LA_Type,    STRING_KIND,
  504.                         LA_ID,        GAD_ASCII_UPLOAD_NAME,
  505.                         LA_LabelID,    MSG_XFER_SEND_TXT,
  506.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIUploadLibrary,
  507.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  508.                         LAST_Picker,    TRUE,
  509.                         GA_Disabled,    Config -> TransferConfig -> ASCIIUploadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIUploadType == XFER_INTERNAL,
  510.                     TAG_DONE);
  511.  
  512.                     LT_New(Handle,
  513.                         LA_Type,    STRING_KIND,
  514.                         LA_ID,        GAD_ASCII_UPLOAD_SIGNATURE,
  515.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  516.                         LA_STRPTR,    Signatures[TRANSFERSIG_ASCIIUPLOAD],
  517.                         GTST_MaxChars,    40,
  518.                         LAST_Picker,    TRUE,
  519.                         GA_Disabled,    Config -> TransferConfig -> ASCIIUploadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIUploadType == XFER_INTERNAL,
  520.                     TAG_DONE);
  521.  
  522.                     LT_New(Handle,
  523.                         LA_Type,    BUTTON_KIND,
  524.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  525.                         LA_ID,        GAD_ASCII_UPLOAD_PREFS,
  526.                         GA_Disabled,    Config -> TransferConfig -> ASCIIUploadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIUploadType == XFER_EXTERNALPROGRAM,
  527.                     TAG_DONE);
  528.  
  529.                     LT_New(Handle,
  530.                         LA_Type,    XBAR_KIND,
  531.                     TAG_DONE);
  532.  
  533.                     LT_New(Handle,
  534.                         LA_Type,    CYCLE_KIND,
  535.                         LA_ID,        GAD_ASCII_DOWNLOAD_TYPE,
  536.                         LA_BYTE,    &Config -> TransferConfig -> ASCIIDownloadType,
  537.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  538.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  539.                         LACY_LastLabel,    MSG_XFER_TYPE4_TXT,
  540.                     TAG_DONE);
  541.  
  542.                     LT_New(Handle,
  543.                         LA_Type,    STRING_KIND,
  544.                         LA_ID,        GAD_ASCII_DOWNLOAD_NAME,
  545.                         LA_LabelID,    MSG_XFER_RECEIVE_TXT,
  546.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIDownloadLibrary,
  547.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  548.                         LAST_Picker,    TRUE,
  549.                         GA_Disabled,    Config -> TransferConfig -> ASCIIDownloadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIDownloadType == XFER_INTERNAL,
  550.                     TAG_DONE);
  551.  
  552.                     LT_New(Handle,
  553.                         LA_Type,    STRING_KIND,
  554.                         LA_ID,        GAD_ASCII_DOWNLOAD_SIGNATURE,
  555.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  556.                         LA_STRPTR,    Signatures[TRANSFERSIG_ASCIIDOWNLOAD],
  557.                         GTST_MaxChars,    40,
  558.                         LAST_Picker,    TRUE,
  559.                         GA_Disabled,    Config -> TransferConfig -> ASCIIDownloadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIDownloadType == XFER_INTERNAL,
  560.                     TAG_DONE);
  561.  
  562.                     LT_New(Handle,
  563.                         LA_Type,    BUTTON_KIND,
  564.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  565.                         LA_ID,        GAD_ASCII_DOWNLOAD_PREFS,
  566.                         GA_Disabled,    Config -> TransferConfig -> ASCIIDownloadType == XFER_DEFAULT || Config -> TransferConfig -> ASCIIDownloadType == XFER_EXTERNALPROGRAM,
  567.                     TAG_DONE);
  568.  
  569.                     LT_EndGroup(Handle);
  570.                 }
  571.  
  572.                 LT_New(Handle,
  573.                     LA_Type,    VERTICAL_KIND,
  574.                 TAG_DONE);
  575.                 {
  576.                     LT_New(Handle,
  577.                         LA_Type,    CYCLE_KIND,
  578.                         LA_ID,        GAD_TEXT_UPLOAD_TYPE,
  579.                         LA_BYTE,    &Config -> TransferConfig -> TextUploadType,
  580.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  581.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  582.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  583.                         LA_Chars,    40,
  584.                     TAG_DONE);
  585.  
  586.                     LT_New(Handle,
  587.                         LA_Type,    STRING_KIND,
  588.                         LA_ID,        GAD_TEXT_UPLOAD_NAME,
  589.                         LA_LabelID,    MSG_XFER_SEND_TXT,
  590.                         LA_STRPTR,    Config -> TransferConfig -> TextUploadLibrary,
  591.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  592.                         LAST_Picker,    TRUE,
  593.                         GA_Disabled,    Config -> TransferConfig -> TextUploadType == XFER_DEFAULT,
  594.                     TAG_DONE);
  595.  
  596.                     LT_New(Handle,
  597.                         LA_Type,    STRING_KIND,
  598.                         LA_ID,        GAD_TEXT_UPLOAD_SIGNATURE,
  599.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  600.                         LA_STRPTR,    Signatures[TRANSFERSIG_TEXTUPLOAD],
  601.                         GTST_MaxChars,    40,
  602.                         LAST_Picker,    TRUE,
  603.                         GA_Disabled,    Config -> TransferConfig -> TextUploadType == XFER_DEFAULT,
  604.                     TAG_DONE);
  605.  
  606.                     LT_New(Handle,
  607.                         LA_Type,    BUTTON_KIND,
  608.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  609.                         LA_ID,        GAD_TEXT_UPLOAD_PREFS,
  610.                         GA_Disabled,    Config -> TransferConfig -> TextUploadType == XFER_DEFAULT || Config -> TransferConfig -> TextUploadType == XFER_EXTERNALPROGRAM,
  611.                     TAG_DONE);
  612.  
  613.                     LT_New(Handle,
  614.                         LA_Type,    XBAR_KIND,
  615.                     TAG_DONE);
  616.  
  617.                     LT_New(Handle,
  618.                         LA_Type,    CYCLE_KIND,
  619.                         LA_ID,        GAD_TEXT_DOWNLOAD_TYPE,
  620.                         LA_BYTE,    &Config -> TransferConfig -> TextDownloadType,
  621.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  622.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  623.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  624.                     TAG_DONE);
  625.  
  626.                     LT_New(Handle,
  627.                         LA_Type,    STRING_KIND,
  628.                         LA_ID,        GAD_TEXT_DOWNLOAD_NAME,
  629.                         LA_LabelID,    MSG_XFER_RECEIVE_TXT,
  630.                         LA_STRPTR,    Config -> TransferConfig -> TextDownloadLibrary,
  631.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  632.                         LAST_Picker,    TRUE,
  633.                         GA_Disabled,    Config -> TransferConfig -> TextDownloadType == XFER_DEFAULT,
  634.                     TAG_DONE);
  635.  
  636.                     LT_New(Handle,
  637.                         LA_Type,    STRING_KIND,
  638.                         LA_ID,        GAD_TEXT_DOWNLOAD_SIGNATURE,
  639.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  640.                         LA_STRPTR,    Signatures[TRANSFERSIG_TEXTDOWNLOAD],
  641.                         GTST_MaxChars,    40,
  642.                         LAST_Picker,    TRUE,
  643.                         GA_Disabled,    Config -> TransferConfig -> TextDownloadType == XFER_DEFAULT,
  644.                     TAG_DONE);
  645.  
  646.                     LT_New(Handle,
  647.                         LA_Type,    BUTTON_KIND,
  648.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  649.                         LA_ID,        GAD_TEXT_DOWNLOAD_PREFS,
  650.                         GA_Disabled,    Config -> TransferConfig -> TextDownloadType == XFER_DEFAULT || Config -> TransferConfig -> TextDownloadType == XFER_EXTERNALPROGRAM,
  651.                     TAG_DONE);
  652.  
  653.                     LT_EndGroup(Handle);
  654.                 }
  655.  
  656.                 LT_New(Handle,
  657.                     LA_Type,    VERTICAL_KIND,
  658.                 TAG_DONE);
  659.                 {
  660.                     LT_New(Handle,
  661.                         LA_Type,    CYCLE_KIND,
  662.                         LA_ID,        GAD_BINARY_UPLOAD_TYPE,
  663.                         LA_BYTE,    &Config -> TransferConfig -> BinaryUploadType,
  664.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  665.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  666.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  667.                         LA_Chars,    40,
  668.                     TAG_DONE);
  669.  
  670.                     LT_New(Handle,
  671.                         LA_Type,    STRING_KIND,
  672.                         LA_ID,        GAD_BINARY_UPLOAD_NAME,
  673.                         LA_LabelID,    MSG_XFER_SEND_TXT,
  674.                         LA_STRPTR,    Config -> TransferConfig -> BinaryUploadLibrary,
  675.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  676.                         LAST_Picker,    TRUE,
  677.                         GA_Disabled,    Config -> TransferConfig -> BinaryUploadType == XFER_DEFAULT,
  678.                     TAG_DONE);
  679.  
  680.                     LT_New(Handle,
  681.                         LA_Type,    STRING_KIND,
  682.                         LA_ID,        GAD_BINARY_UPLOAD_SIGNATURE,
  683.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  684.                         LA_STRPTR,    Signatures[TRANSFERSIG_BINARYUPLOAD],
  685.                         GTST_MaxChars,    40,
  686.                         LAST_Picker,    TRUE,
  687.                         GA_Disabled,    Config -> TransferConfig -> BinaryUploadType == XFER_DEFAULT,
  688.                     TAG_DONE);
  689.  
  690.                     LT_New(Handle,
  691.                         LA_Type,    BUTTON_KIND,
  692.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  693.                         LA_ID,        GAD_BINARY_UPLOAD_PREFS,
  694.                         GA_Disabled,    Config -> TransferConfig -> BinaryUploadType == XFER_DEFAULT || Config -> TransferConfig -> BinaryUploadType == XFER_EXTERNALPROGRAM,
  695.                     TAG_DONE);
  696.  
  697.                     LT_New(Handle,
  698.                         LA_Type,    XBAR_KIND,
  699.                     TAG_DONE);
  700.  
  701.                     LT_New(Handle,
  702.                         LA_Type,    CYCLE_KIND,
  703.                         LA_ID,        GAD_BINARY_DOWNLOAD_TYPE,
  704.                         LA_BYTE,    &Config -> TransferConfig -> BinaryDownloadType,
  705.                         LA_LabelID,    MSG_XFER_TYPE_TXT,
  706.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  707.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  708.                     TAG_DONE);
  709.  
  710.                     LT_New(Handle,
  711.                         LA_Type,    STRING_KIND,
  712.                         LA_ID,        GAD_BINARY_DOWNLOAD_NAME,
  713.                         LA_LabelID,    MSG_XFER_RECEIVE_TXT,
  714.                         LA_STRPTR,    Config -> TransferConfig -> BinaryDownloadLibrary,
  715.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  716.                         LAST_Picker,    TRUE,
  717.                         GA_Disabled,    Config -> TransferConfig -> BinaryDownloadType == XFER_DEFAULT,
  718.                     TAG_DONE);
  719.  
  720.                     LT_New(Handle,
  721.                         LA_Type,    STRING_KIND,
  722.                         LA_ID,        GAD_BINARY_DOWNLOAD_SIGNATURE,
  723.                         LA_LabelID,    MSG_XFER_SIGNATURE_TXT,
  724.                         LA_STRPTR,    Signatures[TRANSFERSIG_BINARYDOWNLOAD],
  725.                         GTST_MaxChars,    40,
  726.                         LAST_Picker,    TRUE,
  727.                         GA_Disabled,    Config -> TransferConfig -> BinaryDownloadType == XFER_DEFAULT,
  728.                     TAG_DONE);
  729.  
  730.                     LT_New(Handle,
  731.                         LA_Type,    BUTTON_KIND,
  732.                         LA_LabelID,    MSG_XFER_SETTINGS_TXT,
  733.                         LA_ID,        GAD_BINARY_DOWNLOAD_PREFS,
  734.                         GA_Disabled,    Config -> TransferConfig -> BinaryDownloadType == XFER_DEFAULT || Config -> TransferConfig -> BinaryDownloadType == XFER_EXTERNALPROGRAM,
  735.                     TAG_DONE);
  736.  
  737.                     LT_EndGroup(Handle);
  738.                 }
  739.  
  740.                 LT_EndGroup(Handle);
  741.             }
  742.  
  743.             LT_New(Handle,
  744.                 LA_Type,VERTICAL_KIND,
  745.             TAG_DONE);
  746.             {
  747.                 LT_New(Handle,
  748.                     LA_Type,    XBAR_KIND,
  749.                     LAXB_FullSize,    TRUE,
  750.                 TAG_DONE);
  751.  
  752.                 LT_EndGroup(Handle);
  753.             }
  754.  
  755.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  756.                 LAGR_SameSize,    TRUE,
  757.                 LAGR_Spread,    TRUE,
  758.             TAG_DONE);
  759.             {
  760.                 LT_New(Handle,
  761.                     LA_Type,    BUTTON_KIND,
  762.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  763.                     LA_ID,        GAD_USE,
  764.                     LABT_ReturnKey,    TRUE,
  765.                     LABT_ExtraFat,    TRUE,
  766.                 TAG_DONE);
  767.  
  768.                 if(Default)
  769.                 {
  770.                     LT_New(Handle,
  771.                         LA_Type,    BUTTON_KIND,
  772.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  773.                         LA_ID,        GAD_DEFAULT,
  774.                         LABT_ExtraFat,    TRUE,
  775.                     TAG_DONE);
  776.                 }
  777.  
  778.                 LT_New(Handle,
  779.                     LA_Type,    BUTTON_KIND,
  780.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  781.                     LA_ID,        GAD_CANCEL,
  782.                     LABT_EscKey,    TRUE,
  783.                     LABT_ExtraFat,    TRUE,
  784.                 TAG_DONE);
  785.  
  786.                 LT_EndGroup(Handle);
  787.             }
  788.  
  789.             LT_EndGroup(Handle);
  790.         }
  791.  
  792.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_LIBPANEL_LIBRARY_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  793.             LAWN_HelpHook,        &GuideHook,
  794.             LAWN_Parent,        Window,
  795.             WA_DepthGadget,        TRUE,
  796.             WA_CloseGadget,        TRUE,
  797.             WA_DragBar,        TRUE,
  798.             WA_RMBTrap,        TRUE,
  799.             WA_Activate,        TRUE,
  800.         TAG_DONE))
  801.         {
  802.             struct IntuiMessage    *Message;
  803.             BOOLEAN             Done = FALSE;
  804.             ULONG             MsgClass,
  805.                          MsgQualifier;
  806.             UWORD             MsgCode;
  807.             struct Gadget        *MsgGadget;
  808.             WORD             Type;
  809.             STRPTR             Contents;
  810.  
  811.             GuideContext(CONTEXT_LIBS);
  812.  
  813.             PushWindow(PanelWindow);
  814.  
  815.             LT_ShowWindow(Handle,TRUE);
  816.  
  817.             do
  818.             {
  819.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  820.                 {
  821.                     SaveConfig(PrivateConfig,Config);
  822.  
  823.                     Cancel = TRUE;
  824.  
  825.                     break;
  826.                 }
  827.  
  828.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  829.                 {
  830.                     MsgClass    = Message -> Class;
  831.                     MsgQualifier    = Message -> Qualifier;
  832.                     MsgCode        = Message -> Code;
  833.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  834.  
  835.                     GT_ReplyIMsg(Message);
  836.  
  837.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  838.  
  839.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  840.                     {
  841.                         SaveConfig(PrivateConfig,Config);
  842.  
  843.                         Cancel = Done = TRUE;
  844.                     }
  845.  
  846.                     if(MsgClass == IDCMP_GADGETUP)
  847.                     {
  848.                         switch(MsgGadget -> GadgetID)
  849.                         {
  850.                             case GAD_USE:
  851.  
  852.                                 LT_UpdateStrings(Handle);
  853.  
  854.                                 for(i = 0 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  855.                                     Config -> TransferConfig -> Signatures[i] . Length = TranslateString(Signatures[i],Config -> TransferConfig -> Signatures[i] . Signature);
  856.  
  857.                                 Done = TRUE;
  858.                                 break;
  859.  
  860.                             case GAD_CANCEL:
  861.  
  862.                                 SaveConfig(PrivateConfig,Config);
  863.  
  864.                                 Cancel = Done = TRUE;
  865.  
  866.                                 OpenIt = FALSE;
  867.  
  868.                                 break;
  869.  
  870.                             case GAD_DEFAULT:
  871.  
  872.                                 *Default = TRUE;
  873.  
  874.                                 Done = TRUE;
  875.  
  876.                                 OpenIt = FALSE;
  877.  
  878.                                 break;
  879.  
  880.                             case GAD_DEFAULT_NAME:
  881.                             case GAD_ASCII_UPLOAD_NAME:
  882.                             case GAD_ASCII_DOWNLOAD_NAME:
  883.                             case GAD_TEXT_UPLOAD_NAME:
  884.                             case GAD_TEXT_DOWNLOAD_NAME:
  885.                             case GAD_BINARY_UPLOAD_NAME:
  886.                             case GAD_BINARY_DOWNLOAD_NAME:
  887.  
  888.                                 switch(LT_GetAttributes(Handle,MsgGadget -> GadgetID - 1,TAG_DONE))
  889.                                 {
  890.                                     case XFER_XPR:
  891.  
  892.                                         FindLibDev(PanelWindow,LT_GetString(Handle,MsgGadget -> GadgetID),NT_LIBRARY,NULL);
  893.  
  894.                                         break;
  895.  
  896.                                     case XFER_EXTERNALPROGRAM:
  897.  
  898.                                         FindProgram(PanelWindow,LT_GetString(Handle,MsgGadget -> GadgetID),NULL);
  899.  
  900.                                         break;
  901.                                 }
  902.  
  903.                                 break;
  904.  
  905.                             case GAD_DEFAULT_TYPE:
  906.                             case GAD_ASCII_UPLOAD_TYPE:
  907.                             case GAD_ASCII_DOWNLOAD_TYPE:
  908.                             case GAD_TEXT_UPLOAD_TYPE:
  909.                             case GAD_TEXT_DOWNLOAD_TYPE:
  910.                             case GAD_BINARY_UPLOAD_TYPE:
  911.                             case GAD_BINARY_DOWNLOAD_TYPE:
  912.  
  913.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID + 1,
  914.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_INTERNAL,
  915.                                 TAG_DONE);
  916.  
  917.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID + 2,
  918.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_INTERNAL,
  919.                                 TAG_DONE);
  920.  
  921.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID + 3,
  922.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_EXTERNALPROGRAM,
  923.                                 TAG_DONE);
  924.  
  925.                                 break;
  926.  
  927.                             case GAD_DEFAULT_PREFS:
  928.                             case GAD_ASCII_UPLOAD_PREFS:
  929.                             case GAD_ASCII_DOWNLOAD_PREFS:
  930.                             case GAD_TEXT_UPLOAD_PREFS:
  931.                             case GAD_TEXT_DOWNLOAD_PREFS:
  932.                             case GAD_BINARY_UPLOAD_PREFS:
  933.                             case GAD_BINARY_DOWNLOAD_PREFS:
  934.  
  935.                                 Type        = LT_GetAttributes(Handle,MsgGadget -> GadgetID - 3,TAG_DONE);
  936.                                 Contents    = LT_GetString(Handle,MsgGadget -> GadgetID - 2);
  937.  
  938.                                 if(Type == XFER_XPR)
  939.                                 {
  940.                                     if(Contents[0])
  941.                                     {
  942.                                         LT_LockWindow(PanelWindow);
  943.  
  944.                                         if(ChangeProtocol(Contents,Type))
  945.                                         {
  946.                                             if(XProtocolBase)
  947.                                             {
  948.                                                 XprIO -> xpr_filename = NULL;
  949.  
  950.                                                 XPRCommandSelected = FALSE;
  951.  
  952.                                                 ClearSerial();
  953.  
  954.                                                 NewOptions = FALSE;
  955.  
  956.                                                 TransferBits = XProtocolSetup(XprIO);
  957.  
  958.                                                 RestartSerial(FALSE);
  959.  
  960.                                                 DeleteTransferPanel(TRUE);
  961.  
  962.                                                     /* Successful? */
  963.  
  964.                                                 if(!(TransferBits & XPRS_SUCCESS))
  965.                                                 {
  966.                                                     MyEasyRequest(PanelWindow,LocaleString(MSG_GLOBAL_FAILED_TO_SET_UP_PROTOCOL_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LastXprLibrary);
  967.  
  968.                                                     CloseLibrary(XProtocolBase);
  969.  
  970.                                                     XProtocolBase = NULL;
  971.  
  972.                                                     LastXprLibrary[0] = 0;
  973.  
  974.                                                     TransferBits = 0;
  975.  
  976.                                                     SetTransferMenu(FALSE);
  977.                                                 }
  978.                                                 else
  979.                                                     SaveProtocolOpts();
  980.                                             }
  981.                                         }
  982.  
  983.                                         ResetProtocol();
  984.  
  985.                                         LT_UnlockWindow(PanelWindow);
  986.                                     }
  987.                                 }
  988.  
  989.                                 if(Type == XFER_INTERNAL)
  990.                                 {
  991.                                     LT_LockWindow(PanelWindow);
  992.  
  993.                                     ASCIITransferPanel(PanelWindow,Config);
  994.  
  995.                                     LT_UnlockWindow(PanelWindow);
  996.  
  997.                                     LT_ShowWindow(Handle,TRUE);
  998.                                 }
  999.  
  1000.                                 break;
  1001.                         }
  1002.                     }
  1003.  
  1004.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  1005.                     {
  1006.                         switch(MsgGadget -> GadgetID)
  1007.                         {
  1008.                             case GAD_DEFAULT_SENDSIGNATURE:
  1009.                             case GAD_ASCII_UPLOAD_SIGNATURE:
  1010.                             case GAD_TEXT_UPLOAD_SIGNATURE:
  1011.                             case GAD_BINARY_UPLOAD_SIGNATURE:
  1012.  
  1013.                                 LT_LockWindow(PanelWindow);
  1014.  
  1015.                                 if(SignaturePanel(PanelWindow,SharedBuffer,FALSE))
  1016.                                     LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  1017.  
  1018.                                 LT_UnlockWindow(PanelWindow);
  1019.  
  1020.                                 LT_ShowWindow(Handle,TRUE);
  1021.                                 break;
  1022.  
  1023.                             case GAD_DEFAULT_RECEIVESIGNATURE:
  1024.                             case GAD_ASCII_DOWNLOAD_SIGNATURE:
  1025.                             case GAD_TEXT_DOWNLOAD_SIGNATURE:
  1026.                             case GAD_BINARY_DOWNLOAD_SIGNATURE:
  1027.  
  1028.                                 LT_LockWindow(PanelWindow);
  1029.  
  1030.                                 if(SignaturePanel(PanelWindow,SharedBuffer,TRUE))
  1031.                                     LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  1032.  
  1033.                                 LT_UnlockWindow(PanelWindow);
  1034.  
  1035.                                 LT_ShowWindow(Handle,TRUE);
  1036.                                 break;
  1037.  
  1038.                             default:
  1039.  
  1040.                                 Type = LT_GetAttributes(Handle,MsgGadget -> GadgetID - 1,TAG_DONE);
  1041.  
  1042.                                 if(Type == XFER_XPR)
  1043.                                 {
  1044.                                     LT_LockWindow(PanelWindow);
  1045.  
  1046.                                     strcpy(SharedBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  1047.  
  1048.                                     if(PickFile(PanelWindow,"Libs:","xpr#?.library",LocaleString(MSG_LIBPANEL_SELECT_DEFAULT_TRANSFER_LIBRARY_TXT + (MsgGadget -> GadgetID - GAD_DEFAULT_TYPE) / 4),SharedBuffer,NT_LIBRARY))
  1049.                                     {
  1050.                                         FindLibDev(PanelWindow,SharedBuffer,NT_LIBRARY,NULL);
  1051.  
  1052.                                         LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  1053.                                     }
  1054.  
  1055.                                     LT_UnlockWindow(PanelWindow);
  1056.  
  1057.                                     LT_ShowWindow(Handle,TRUE);
  1058.                                 }
  1059.  
  1060.                                 if(Type == XFER_EXTERNALPROGRAM)
  1061.                                 {
  1062.                                     LT_LockWindow(PanelWindow);
  1063.  
  1064.                                     Contents = LT_GetString(Handle,MsgGadget -> GadgetID);
  1065.  
  1066.                                     if(ExternalCommandPanel(PanelWindow,Contents))
  1067.                                     {
  1068.                                         FindProgram(PanelWindow,Contents,NULL);
  1069.  
  1070.                                         LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,Contents,TAG_DONE);
  1071.                                     }
  1072.  
  1073.                                     LT_UnlockWindow(PanelWindow);
  1074.  
  1075.                                     LT_ShowWindow(Handle,TRUE);
  1076.                                 }
  1077.  
  1078.                                 break;
  1079.                         }
  1080.                     }
  1081.                 }
  1082.             }
  1083.             while(!Done);
  1084.  
  1085.             PopWindow();
  1086.         }
  1087.  
  1088.         LT_DeleteHandle(Handle);
  1089.     }
  1090.  
  1091.     FreeVecPooled(Signatures[0]);
  1092.  
  1093.     if(Default)
  1094.         return((BYTE)(!Cancel));
  1095.     else
  1096.     {
  1097.         if(Cancel)
  1098.             return(FALSE);
  1099.  
  1100.         if(Config -> PathConfig && Config -> TransferConfig && Config -> MiscConfig)
  1101.         {
  1102.             if(Config -> MiscConfig -> ProtectiveMode && !Config -> TransferConfig -> OverridePath)
  1103.             {
  1104.                 STRPTR    Library    = NULL,
  1105.                     Path    = NULL;
  1106.  
  1107.                 if(Config -> TransferConfig -> DefaultType == XFER_XPR && Config -> TransferConfig -> DefaultLibrary[0])
  1108.                 {
  1109.                     Library    = Config -> TransferConfig -> DefaultLibrary;
  1110.                     Path    = Config -> PathConfig -> BinaryDownloadPath;
  1111.                 }
  1112.  
  1113.                 if(Config -> TransferConfig -> ASCIIDownloadType == XFER_XPR && Config -> TransferConfig -> ASCIIDownloadLibrary[0])
  1114.                 {
  1115.                     Library    = Config -> TransferConfig -> ASCIIDownloadLibrary;
  1116.                     Path    = Config -> PathConfig -> ASCIIDownloadPath;
  1117.                 }
  1118.  
  1119.                 if(Config -> TransferConfig -> TextDownloadType == XFER_XPR && Config -> TransferConfig -> TextDownloadLibrary[0])
  1120.                 {
  1121.                     Library    = Config -> TransferConfig -> TextDownloadLibrary;
  1122.                     Path    = Config -> PathConfig -> TextDownloadPath;
  1123.                 }
  1124.  
  1125.                 if(Config -> TransferConfig -> BinaryDownloadType == XFER_XPR && Config -> TransferConfig -> BinaryDownloadLibrary[0])
  1126.                 {
  1127.                     Library    = Config -> TransferConfig -> BinaryDownloadLibrary;
  1128.                     Path    = Config -> PathConfig -> BinaryDownloadPath;
  1129.                 }
  1130.  
  1131.                 if(Library && Path)
  1132.                 {
  1133.                     UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  1134.  
  1135.                     if(*Path == 0)
  1136.                     {
  1137.                         if(GetCurrentDirName(LocalBuffer,MAX_FILENAME_LENGTH))
  1138.                             Path = LocalBuffer;
  1139.                     }
  1140.  
  1141.                     if(MyEasyRequest(Window,LocaleString(MSG_XPR_PATH_TXT),LocaleString(MSG_GLOBAL_YES_NO_TXT),Library,Path))
  1142.                         Config -> TransferConfig -> OverridePath = TRUE;
  1143.                 }
  1144.             }
  1145.         }
  1146.  
  1147.         if(XProtocolBase)
  1148.             return((BYTE)memcmp(PrivateConfig -> TransferConfig,Config -> TransferConfig,sizeof(struct TransferSettings)));
  1149.         else
  1150.         {
  1151.             if(Config -> TransferConfig -> DefaultLibrary[0])
  1152.                 return(OpenIt);
  1153.             else
  1154.                 return((BYTE)memcmp(PrivateConfig -> TransferConfig,Config -> TransferConfig,sizeof(struct TransferSettings)));
  1155.         }
  1156.     }
  1157. }
  1158.